package com.expriment.aes;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class ResultOfAES {

    HSSFWorkbook wb = null;
    HSSFSheet sheet = null;
    HSSFRow row = null;
    HSSFCell cell = null;
    public void createSheet() {
        //实验一的数据表
        wb = new HSSFWorkbook();
        sheet = wb.createSheet("实验一_FHOPE与AES加解密时间");
        row = sheet.createRow(0);
        cell = row.createCell(0);
        cell.setCellValue("FHOPE加密时间");
        cell = row.createCell(1);
        cell.setCellValue("AES加密时间");
        cell = row.createCell(2);
        cell.setCellValue("FHOPE解密时间");
        cell = row.createCell(3);
        cell.setCellValue("AES解密时间");

        //实验二的数据表
        sheet = wb.createSheet("实验二_不同数据量下FHOPE与AES算法的对比测试");
        row = sheet.createRow(0);
        cell = row.createCell(0);
        cell.setCellValue("数据量");
        cell = row.createCell(1);
        cell.setCellValue("FHOPE加密时间");
        cell = row.createCell(2);
        cell.setCellValue("AES加密时间");
        cell = row.createCell(3);
        cell.setCellValue("FHOPE解密时间");
        cell = row.createCell(4);
        cell.setCellValue("AES解密时间");
        
        try {
            FileOutputStream fout = new FileOutputStream("D://FHOPE实验数据.xls");
            wb.write(fout);
            fout.close();
            wb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void experimentWithAESOutput(long encTimeOfFHOPE, long encTimeOfAES,
            long decTimeOfFHOPE, long decTimeOfAES) {
        try {
            FileInputStream fs = new FileInputStream("D://FHOPE实验数据.xls"); // 获取d://test.xls
            POIFSFileSystem ps = new POIFSFileSystem(fs); // 使用POI提供的方法得到excel的信息
            HSSFWorkbook wb = new HSSFWorkbook(ps);
            HSSFSheet sheet = wb.getSheet("实验一_FHOPE与AES加解密时间"); // 获取到工作表，因为一个excel可能有多个工作表
            HSSFRow row = sheet.getRow(0); // 获取第一行（excel中的行默认从0开始，所以这就是为什么，一个excel必须有字段列头），即字段列头，便于赋值
            int lastRow = sheet.getLastRowNum();
            FileOutputStream out = new FileOutputStream("D://FHOPE实验数据.xls"); // 向d://test.xls中写数据
            row = sheet.createRow(lastRow + 1); // 在现有行号后追加数据
            row.createCell(0).setCellValue(String.valueOf(encTimeOfFHOPE)); // 设置第一个（从0开始）单元格的数据
            row.createCell(1).setCellValue(String.valueOf(encTimeOfAES));
            row.createCell(2).setCellValue(String.valueOf(decTimeOfFHOPE));
            row.createCell(3).setCellValue(String.valueOf(decTimeOfAES));
            out.flush();
            wb.write(out);
            out.close();
            wb.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //实验二的输出函数
    public void experimentNumAES(int num, long encTimeOfFHOPE, long encTimeOfAES,
            long decTimeOfFHOPE,long decTimeOfAES) {
        try {
            FileInputStream fs = new FileInputStream("D://FHOPE实验数据.xls"); // 获取d://test.xls
            POIFSFileSystem ps = new POIFSFileSystem(fs); // 使用POI提供的方法得到excel的信息
            HSSFWorkbook wb = new HSSFWorkbook(ps);
            HSSFSheet sheet = wb.getSheet("实验二_不同数据量下FHOPE与AES算法的对比测试"); // 获取到工作表，因为一个excel可能有多个工作表
            HSSFRow row = sheet.getRow(0); // 获取第一行（excel中的行默认从0开始，所以这就是为什么，一个excel必须有字段列头），即字段列头，便于赋值
            int lastRow = sheet.getLastRowNum();
            FileOutputStream out = new FileOutputStream("D://FHOPE实验数据.xls"); // 向d://test.xls中写数据
            row = sheet.createRow(lastRow + 1); // 在现有行号后追加数据
            row.createCell(0).setCellValue(num);
            row.createCell(1).setCellValue(encTimeOfFHOPE); // 设置第一个（从0开始）单元格的数据
            row.createCell(2).setCellValue(encTimeOfAES);
            row.createCell(3).setCellValue(decTimeOfFHOPE);
            row.createCell(4).setCellValue(decTimeOfAES);
            out.flush();
            wb.write(out);
            out.close();
            wb.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
